// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

using System;
using System.Threading;
using System.Threading.Tasks;

#nullable restore
namespace Elastic.Clients.Elasticsearch.Ccr
{
	public class CcrNamespace : NamespacedClientProxy
	{
		internal CcrNamespace(ElasticsearchClient client) : base(client)
		{
		}

		public CcrDeleteAutoFollowPatternResponse DeleteAutoFollowPattern(CcrDeleteAutoFollowPatternRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrDeleteAutoFollowPatternRequest, CcrDeleteAutoFollowPatternResponse>(request);
		}

		public Task<CcrDeleteAutoFollowPatternResponse> DeleteAutoFollowPatternAsync(CcrDeleteAutoFollowPatternRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrDeleteAutoFollowPatternRequest, CcrDeleteAutoFollowPatternResponse>(request, cancellationToken);
		}

		public CcrDeleteAutoFollowPatternResponse DeleteAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name)
		{
			var descriptor = new CcrDeleteAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequest<CcrDeleteAutoFollowPatternRequestDescriptor, CcrDeleteAutoFollowPatternResponse>(descriptor);
		}

		public CcrDeleteAutoFollowPatternResponse DeleteAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name, Action<CcrDeleteAutoFollowPatternRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrDeleteAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrDeleteAutoFollowPatternRequestDescriptor, CcrDeleteAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrDeleteAutoFollowPatternResponse> DeleteAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrDeleteAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrDeleteAutoFollowPatternRequestDescriptor, CcrDeleteAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrDeleteAutoFollowPatternResponse> DeleteAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, Action<CcrDeleteAutoFollowPatternRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrDeleteAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrDeleteAutoFollowPatternRequestDescriptor, CcrDeleteAutoFollowPatternResponse>(descriptor);
		}

		public CcrFollowInfoResponse FollowInfo(CcrFollowInfoRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrFollowInfoRequest, CcrFollowInfoResponse>(request);
		}

		public Task<CcrFollowInfoResponse> FollowInfoAsync(CcrFollowInfoRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrFollowInfoRequest, CcrFollowInfoResponse>(request, cancellationToken);
		}

		public CcrFollowInfoResponse FollowInfo(Elastic.Clients.Elasticsearch.Indices indices)
		{
			var descriptor = new CcrFollowInfoRequestDescriptor(indices);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowInfoRequestDescriptor, CcrFollowInfoResponse>(descriptor);
		}

		public CcrFollowInfoResponse FollowInfo(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowInfoRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrFollowInfoRequestDescriptor(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowInfoRequestDescriptor, CcrFollowInfoResponse>(descriptor);
		}

		public CcrFollowInfoResponse FollowInfo<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowInfoRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrFollowInfoRequestDescriptor<TDocument>(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowInfoRequestDescriptor<TDocument>, CcrFollowInfoResponse>(descriptor);
		}

		public Task<CcrFollowInfoResponse> FollowInfoAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowInfoRequestDescriptor(indices);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowInfoRequestDescriptor, CcrFollowInfoResponse>(descriptor);
		}

		public Task<CcrFollowInfoResponse> FollowInfoAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowInfoRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowInfoRequestDescriptor(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowInfoRequestDescriptor, CcrFollowInfoResponse>(descriptor);
		}

		public Task<CcrFollowInfoResponse> FollowInfoAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowInfoRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowInfoRequestDescriptor<TDocument>(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowInfoRequestDescriptor<TDocument>, CcrFollowInfoResponse>(descriptor);
		}

		public CcrFollowResponse Follow(CcrFollowRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrFollowRequest, CcrFollowResponse>(request);
		}

		public Task<CcrFollowResponse> FollowAsync(CcrFollowRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrFollowRequest, CcrFollowResponse>(request, cancellationToken);
		}

		public CcrFollowResponse Follow(Elastic.Clients.Elasticsearch.IndexName index)
		{
			var descriptor = new CcrFollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowRequestDescriptor, CcrFollowResponse>(descriptor);
		}

		public CcrFollowResponse Follow(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrFollowRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrFollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowRequestDescriptor, CcrFollowResponse>(descriptor);
		}

		public CcrFollowResponse Follow<TDocument>()
		{
			var descriptor = new CcrFollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowRequestDescriptor<TDocument>, CcrFollowResponse>(descriptor);
		}

		public CcrFollowResponse Follow<TDocument>(Action<CcrFollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrFollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowRequestDescriptor<TDocument>, CcrFollowResponse>(descriptor);
		}

		public CcrFollowResponse Follow<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrFollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrFollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowRequestDescriptor<TDocument>, CcrFollowResponse>(descriptor);
		}

		public Task<CcrFollowResponse> FollowAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowRequestDescriptor, CcrFollowResponse>(descriptor);
		}

		public Task<CcrFollowResponse> FollowAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrFollowRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowRequestDescriptor, CcrFollowResponse>(descriptor);
		}

		public Task<CcrFollowResponse> FollowAsync<TDocument>(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowRequestDescriptor<TDocument>, CcrFollowResponse>(descriptor);
		}

		public Task<CcrFollowResponse> FollowAsync<TDocument>(Action<CcrFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowRequestDescriptor<TDocument>, CcrFollowResponse>(descriptor);
		}

		public Task<CcrFollowResponse> FollowAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowRequestDescriptor<TDocument>, CcrFollowResponse>(descriptor);
		}

		public CcrFollowStatsResponse FollowStats(CcrFollowStatsRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrFollowStatsRequest, CcrFollowStatsResponse>(request);
		}

		public Task<CcrFollowStatsResponse> FollowStatsAsync(CcrFollowStatsRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrFollowStatsRequest, CcrFollowStatsResponse>(request, cancellationToken);
		}

		public CcrFollowStatsResponse FollowStats(Elastic.Clients.Elasticsearch.Indices indices)
		{
			var descriptor = new CcrFollowStatsRequestDescriptor(indices);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowStatsRequestDescriptor, CcrFollowStatsResponse>(descriptor);
		}

		public CcrFollowStatsResponse FollowStats(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowStatsRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrFollowStatsRequestDescriptor(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowStatsRequestDescriptor, CcrFollowStatsResponse>(descriptor);
		}

		public CcrFollowStatsResponse FollowStats<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowStatsRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrFollowStatsRequestDescriptor<TDocument>(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrFollowStatsRequestDescriptor<TDocument>, CcrFollowStatsResponse>(descriptor);
		}

		public Task<CcrFollowStatsResponse> FollowStatsAsync(Elastic.Clients.Elasticsearch.Indices indices, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowStatsRequestDescriptor(indices);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowStatsRequestDescriptor, CcrFollowStatsResponse>(descriptor);
		}

		public Task<CcrFollowStatsResponse> FollowStatsAsync(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowStatsRequestDescriptor(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowStatsRequestDescriptor, CcrFollowStatsResponse>(descriptor);
		}

		public Task<CcrFollowStatsResponse> FollowStatsAsync<TDocument>(Elastic.Clients.Elasticsearch.Indices indices, Action<CcrFollowStatsRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrFollowStatsRequestDescriptor<TDocument>(indices);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrFollowStatsRequestDescriptor<TDocument>, CcrFollowStatsResponse>(descriptor);
		}

		public CcrForgetFollowerResponse ForgetFollower(CcrForgetFollowerRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrForgetFollowerRequest, CcrForgetFollowerResponse>(request);
		}

		public Task<CcrForgetFollowerResponse> ForgetFollowerAsync(CcrForgetFollowerRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrForgetFollowerRequest, CcrForgetFollowerResponse>(request, cancellationToken);
		}

		public CcrForgetFollowerResponse ForgetFollower(Elastic.Clients.Elasticsearch.IndexName index)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequest<CcrForgetFollowerRequestDescriptor, CcrForgetFollowerResponse>(descriptor);
		}

		public CcrForgetFollowerResponse ForgetFollower(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrForgetFollowerRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrForgetFollowerRequestDescriptor, CcrForgetFollowerResponse>(descriptor);
		}

		public CcrForgetFollowerResponse ForgetFollower<TDocument>()
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequest<CcrForgetFollowerRequestDescriptor<TDocument>, CcrForgetFollowerResponse>(descriptor);
		}

		public CcrForgetFollowerResponse ForgetFollower<TDocument>(Action<CcrForgetFollowerRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrForgetFollowerRequestDescriptor<TDocument>, CcrForgetFollowerResponse>(descriptor);
		}

		public CcrForgetFollowerResponse ForgetFollower<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrForgetFollowerRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrForgetFollowerRequestDescriptor<TDocument>, CcrForgetFollowerResponse>(descriptor);
		}

		public Task<CcrForgetFollowerResponse> ForgetFollowerAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrForgetFollowerRequestDescriptor, CcrForgetFollowerResponse>(descriptor);
		}

		public Task<CcrForgetFollowerResponse> ForgetFollowerAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrForgetFollowerRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrForgetFollowerRequestDescriptor, CcrForgetFollowerResponse>(descriptor);
		}

		public Task<CcrForgetFollowerResponse> ForgetFollowerAsync<TDocument>(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrForgetFollowerRequestDescriptor<TDocument>, CcrForgetFollowerResponse>(descriptor);
		}

		public Task<CcrForgetFollowerResponse> ForgetFollowerAsync<TDocument>(Action<CcrForgetFollowerRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrForgetFollowerRequestDescriptor<TDocument>, CcrForgetFollowerResponse>(descriptor);
		}

		public Task<CcrForgetFollowerResponse> ForgetFollowerAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrForgetFollowerRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrForgetFollowerRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrForgetFollowerRequestDescriptor<TDocument>, CcrForgetFollowerResponse>(descriptor);
		}

		public CcrGetAutoFollowPatternResponse GetAutoFollowPattern(CcrGetAutoFollowPatternRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrGetAutoFollowPatternRequest, CcrGetAutoFollowPatternResponse>(request);
		}

		public Task<CcrGetAutoFollowPatternResponse> GetAutoFollowPatternAsync(CcrGetAutoFollowPatternRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrGetAutoFollowPatternRequest, CcrGetAutoFollowPatternResponse>(request, cancellationToken);
		}

		public CcrGetAutoFollowPatternResponse GetAutoFollowPattern()
		{
			var descriptor = new CcrGetAutoFollowPatternRequestDescriptor();
			descriptor.BeforeRequest();
			return DoRequest<CcrGetAutoFollowPatternRequestDescriptor, CcrGetAutoFollowPatternResponse>(descriptor);
		}

		public CcrGetAutoFollowPatternResponse GetAutoFollowPattern(Action<CcrGetAutoFollowPatternRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrGetAutoFollowPatternRequestDescriptor();
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrGetAutoFollowPatternRequestDescriptor, CcrGetAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrGetAutoFollowPatternResponse> GetAutoFollowPatternAsync(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrGetAutoFollowPatternRequestDescriptor();
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrGetAutoFollowPatternRequestDescriptor, CcrGetAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrGetAutoFollowPatternResponse> GetAutoFollowPatternAsync(Action<CcrGetAutoFollowPatternRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrGetAutoFollowPatternRequestDescriptor();
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrGetAutoFollowPatternRequestDescriptor, CcrGetAutoFollowPatternResponse>(descriptor);
		}

		public CcrPauseAutoFollowPatternResponse PauseAutoFollowPattern(CcrPauseAutoFollowPatternRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrPauseAutoFollowPatternRequest, CcrPauseAutoFollowPatternResponse>(request);
		}

		public Task<CcrPauseAutoFollowPatternResponse> PauseAutoFollowPatternAsync(CcrPauseAutoFollowPatternRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrPauseAutoFollowPatternRequest, CcrPauseAutoFollowPatternResponse>(request, cancellationToken);
		}

		public CcrPauseAutoFollowPatternResponse PauseAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name)
		{
			var descriptor = new CcrPauseAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseAutoFollowPatternRequestDescriptor, CcrPauseAutoFollowPatternResponse>(descriptor);
		}

		public CcrPauseAutoFollowPatternResponse PauseAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name, Action<CcrPauseAutoFollowPatternRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrPauseAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseAutoFollowPatternRequestDescriptor, CcrPauseAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrPauseAutoFollowPatternResponse> PauseAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseAutoFollowPatternRequestDescriptor, CcrPauseAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrPauseAutoFollowPatternResponse> PauseAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, Action<CcrPauseAutoFollowPatternRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseAutoFollowPatternRequestDescriptor, CcrPauseAutoFollowPatternResponse>(descriptor);
		}

		public CcrPauseFollowResponse PauseFollow(CcrPauseFollowRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrPauseFollowRequest, CcrPauseFollowResponse>(request);
		}

		public Task<CcrPauseFollowResponse> PauseFollowAsync(CcrPauseFollowRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrPauseFollowRequest, CcrPauseFollowResponse>(request, cancellationToken);
		}

		public CcrPauseFollowResponse PauseFollow(Elastic.Clients.Elasticsearch.IndexName index)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseFollowRequestDescriptor, CcrPauseFollowResponse>(descriptor);
		}

		public CcrPauseFollowResponse PauseFollow(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrPauseFollowRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseFollowRequestDescriptor, CcrPauseFollowResponse>(descriptor);
		}

		public CcrPauseFollowResponse PauseFollow<TDocument>()
		{
			var descriptor = new CcrPauseFollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseFollowRequestDescriptor<TDocument>, CcrPauseFollowResponse>(descriptor);
		}

		public CcrPauseFollowResponse PauseFollow<TDocument>(Action<CcrPauseFollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseFollowRequestDescriptor<TDocument>, CcrPauseFollowResponse>(descriptor);
		}

		public CcrPauseFollowResponse PauseFollow<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrPauseFollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrPauseFollowRequestDescriptor<TDocument>, CcrPauseFollowResponse>(descriptor);
		}

		public Task<CcrPauseFollowResponse> PauseFollowAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseFollowRequestDescriptor, CcrPauseFollowResponse>(descriptor);
		}

		public Task<CcrPauseFollowResponse> PauseFollowAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrPauseFollowRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseFollowRequestDescriptor, CcrPauseFollowResponse>(descriptor);
		}

		public Task<CcrPauseFollowResponse> PauseFollowAsync<TDocument>(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseFollowRequestDescriptor<TDocument>, CcrPauseFollowResponse>(descriptor);
		}

		public Task<CcrPauseFollowResponse> PauseFollowAsync<TDocument>(Action<CcrPauseFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseFollowRequestDescriptor<TDocument>, CcrPauseFollowResponse>(descriptor);
		}

		public Task<CcrPauseFollowResponse> PauseFollowAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrPauseFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPauseFollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPauseFollowRequestDescriptor<TDocument>, CcrPauseFollowResponse>(descriptor);
		}

		public CcrPutAutoFollowPatternResponse PutAutoFollowPattern(CcrPutAutoFollowPatternRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrPutAutoFollowPatternRequest, CcrPutAutoFollowPatternResponse>(request);
		}

		public Task<CcrPutAutoFollowPatternResponse> PutAutoFollowPatternAsync(CcrPutAutoFollowPatternRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrPutAutoFollowPatternRequest, CcrPutAutoFollowPatternResponse>(request, cancellationToken);
		}

		public CcrPutAutoFollowPatternResponse PutAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name)
		{
			var descriptor = new CcrPutAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequest<CcrPutAutoFollowPatternRequestDescriptor, CcrPutAutoFollowPatternResponse>(descriptor);
		}

		public CcrPutAutoFollowPatternResponse PutAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name, Action<CcrPutAutoFollowPatternRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrPutAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrPutAutoFollowPatternRequestDescriptor, CcrPutAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrPutAutoFollowPatternResponse> PutAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPutAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPutAutoFollowPatternRequestDescriptor, CcrPutAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrPutAutoFollowPatternResponse> PutAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, Action<CcrPutAutoFollowPatternRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrPutAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrPutAutoFollowPatternRequestDescriptor, CcrPutAutoFollowPatternResponse>(descriptor);
		}

		public CcrResumeAutoFollowPatternResponse ResumeAutoFollowPattern(CcrResumeAutoFollowPatternRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrResumeAutoFollowPatternRequest, CcrResumeAutoFollowPatternResponse>(request);
		}

		public Task<CcrResumeAutoFollowPatternResponse> ResumeAutoFollowPatternAsync(CcrResumeAutoFollowPatternRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrResumeAutoFollowPatternRequest, CcrResumeAutoFollowPatternResponse>(request, cancellationToken);
		}

		public CcrResumeAutoFollowPatternResponse ResumeAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name)
		{
			var descriptor = new CcrResumeAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeAutoFollowPatternRequestDescriptor, CcrResumeAutoFollowPatternResponse>(descriptor);
		}

		public CcrResumeAutoFollowPatternResponse ResumeAutoFollowPattern(Elastic.Clients.Elasticsearch.Name name, Action<CcrResumeAutoFollowPatternRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrResumeAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeAutoFollowPatternRequestDescriptor, CcrResumeAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrResumeAutoFollowPatternResponse> ResumeAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeAutoFollowPatternRequestDescriptor(name);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeAutoFollowPatternRequestDescriptor, CcrResumeAutoFollowPatternResponse>(descriptor);
		}

		public Task<CcrResumeAutoFollowPatternResponse> ResumeAutoFollowPatternAsync(Elastic.Clients.Elasticsearch.Name name, Action<CcrResumeAutoFollowPatternRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeAutoFollowPatternRequestDescriptor(name);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeAutoFollowPatternRequestDescriptor, CcrResumeAutoFollowPatternResponse>(descriptor);
		}

		public CcrResumeFollowResponse ResumeFollow(CcrResumeFollowRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrResumeFollowRequest, CcrResumeFollowResponse>(request);
		}

		public Task<CcrResumeFollowResponse> ResumeFollowAsync(CcrResumeFollowRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrResumeFollowRequest, CcrResumeFollowResponse>(request, cancellationToken);
		}

		public CcrResumeFollowResponse ResumeFollow(Elastic.Clients.Elasticsearch.IndexName index)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeFollowRequestDescriptor, CcrResumeFollowResponse>(descriptor);
		}

		public CcrResumeFollowResponse ResumeFollow(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrResumeFollowRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeFollowRequestDescriptor, CcrResumeFollowResponse>(descriptor);
		}

		public CcrResumeFollowResponse ResumeFollow<TDocument>()
		{
			var descriptor = new CcrResumeFollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeFollowRequestDescriptor<TDocument>, CcrResumeFollowResponse>(descriptor);
		}

		public CcrResumeFollowResponse ResumeFollow<TDocument>(Action<CcrResumeFollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeFollowRequestDescriptor<TDocument>, CcrResumeFollowResponse>(descriptor);
		}

		public CcrResumeFollowResponse ResumeFollow<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrResumeFollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrResumeFollowRequestDescriptor<TDocument>, CcrResumeFollowResponse>(descriptor);
		}

		public Task<CcrResumeFollowResponse> ResumeFollowAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeFollowRequestDescriptor, CcrResumeFollowResponse>(descriptor);
		}

		public Task<CcrResumeFollowResponse> ResumeFollowAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrResumeFollowRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeFollowRequestDescriptor, CcrResumeFollowResponse>(descriptor);
		}

		public Task<CcrResumeFollowResponse> ResumeFollowAsync<TDocument>(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeFollowRequestDescriptor<TDocument>, CcrResumeFollowResponse>(descriptor);
		}

		public Task<CcrResumeFollowResponse> ResumeFollowAsync<TDocument>(Action<CcrResumeFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeFollowRequestDescriptor<TDocument>, CcrResumeFollowResponse>(descriptor);
		}

		public Task<CcrResumeFollowResponse> ResumeFollowAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrResumeFollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrResumeFollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrResumeFollowRequestDescriptor<TDocument>, CcrResumeFollowResponse>(descriptor);
		}

		public CcrStatsResponse Stats(CcrStatsRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrStatsRequest, CcrStatsResponse>(request);
		}

		public Task<CcrStatsResponse> StatsAsync(CcrStatsRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrStatsRequest, CcrStatsResponse>(request, cancellationToken);
		}

		public CcrStatsResponse Stats()
		{
			var descriptor = new CcrStatsRequestDescriptor();
			descriptor.BeforeRequest();
			return DoRequest<CcrStatsRequestDescriptor, CcrStatsResponse>(descriptor);
		}

		public CcrStatsResponse Stats(Action<CcrStatsRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrStatsRequestDescriptor();
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrStatsRequestDescriptor, CcrStatsResponse>(descriptor);
		}

		public Task<CcrStatsResponse> StatsAsync(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrStatsRequestDescriptor();
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrStatsRequestDescriptor, CcrStatsResponse>(descriptor);
		}

		public Task<CcrStatsResponse> StatsAsync(Action<CcrStatsRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrStatsRequestDescriptor();
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrStatsRequestDescriptor, CcrStatsResponse>(descriptor);
		}

		public CcrUnfollowResponse Unfollow(CcrUnfollowRequest request)
		{
			request.BeforeRequest();
			return DoRequest<CcrUnfollowRequest, CcrUnfollowResponse>(request);
		}

		public Task<CcrUnfollowResponse> UnfollowAsync(CcrUnfollowRequest request, CancellationToken cancellationToken = default)
		{
			request.BeforeRequest();
			return DoRequestAsync<CcrUnfollowRequest, CcrUnfollowResponse>(request, cancellationToken);
		}

		public CcrUnfollowResponse Unfollow(Elastic.Clients.Elasticsearch.IndexName index)
		{
			var descriptor = new CcrUnfollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequest<CcrUnfollowRequestDescriptor, CcrUnfollowResponse>(descriptor);
		}

		public CcrUnfollowResponse Unfollow(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrUnfollowRequestDescriptor> configureRequest)
		{
			var descriptor = new CcrUnfollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrUnfollowRequestDescriptor, CcrUnfollowResponse>(descriptor);
		}

		public CcrUnfollowResponse Unfollow<TDocument>()
		{
			var descriptor = new CcrUnfollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequest<CcrUnfollowRequestDescriptor<TDocument>, CcrUnfollowResponse>(descriptor);
		}

		public CcrUnfollowResponse Unfollow<TDocument>(Action<CcrUnfollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrUnfollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrUnfollowRequestDescriptor<TDocument>, CcrUnfollowResponse>(descriptor);
		}

		public CcrUnfollowResponse Unfollow<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrUnfollowRequestDescriptor<TDocument>> configureRequest)
		{
			var descriptor = new CcrUnfollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequest<CcrUnfollowRequestDescriptor<TDocument>, CcrUnfollowResponse>(descriptor);
		}

		public Task<CcrUnfollowResponse> UnfollowAsync(Elastic.Clients.Elasticsearch.IndexName index, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrUnfollowRequestDescriptor(index);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrUnfollowRequestDescriptor, CcrUnfollowResponse>(descriptor);
		}

		public Task<CcrUnfollowResponse> UnfollowAsync(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrUnfollowRequestDescriptor> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrUnfollowRequestDescriptor(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrUnfollowRequestDescriptor, CcrUnfollowResponse>(descriptor);
		}

		public Task<CcrUnfollowResponse> UnfollowAsync<TDocument>(CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrUnfollowRequestDescriptor<TDocument>(typeof(TDocument));
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrUnfollowRequestDescriptor<TDocument>, CcrUnfollowResponse>(descriptor);
		}

		public Task<CcrUnfollowResponse> UnfollowAsync<TDocument>(Action<CcrUnfollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrUnfollowRequestDescriptor<TDocument>(typeof(TDocument));
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrUnfollowRequestDescriptor<TDocument>, CcrUnfollowResponse>(descriptor);
		}

		public Task<CcrUnfollowResponse> UnfollowAsync<TDocument>(Elastic.Clients.Elasticsearch.IndexName index, Action<CcrUnfollowRequestDescriptor<TDocument>> configureRequest, CancellationToken cancellationToken = default)
		{
			var descriptor = new CcrUnfollowRequestDescriptor<TDocument>(index);
			configureRequest?.Invoke(descriptor);
			descriptor.BeforeRequest();
			return DoRequestAsync<CcrUnfollowRequestDescriptor<TDocument>, CcrUnfollowResponse>(descriptor);
		}
	}
}